#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h> /* superset of previous */
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char const *argv[])
{
    // 1.创建客户端
    int tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (tcp_socket < 0)
    {
        perror("socket");
        return 1;
    }
    else
    {
        printf("socket success\n");
    }

    // 2.连接服务器
    struct sockaddr_in addr;
      memset(&addr, 0, sizeof(addr)); 
    addr.sin_family = AF_INET;
    addr.sin_port = htons(1515);
    addr.sin_addr.s_addr = inet_addr("192.168.63.60");

    int ret = connect(tcp_socket, (struct sockaddr *)&addr, sizeof(addr));

    if (ret < 0)
    {
        perror("connect");
        return -1;
    }
    else
    {
        printf("connect success\n");
    }

    printf("客户端 %d 已连接服务器\n", tcp_socket);

    // 3. 接收数据
    // while(1)
    // {
    //     char buf[1024] = {0};
    //     int len = read(tcp_socket, buf , 1024);
    //     if (len < 0)
    //     {
    //         perror("read");
    //         return -1;
    //     }
    //     else if (len == 0)
    //     {
    //         printf ("服务器已关闭\n");
    //         break;
    //     }
    //     else
    //     {
    //         printf("收到消息: %s\n", buf);
    //     }
    // }

    // 4. 发送数据
    while(1)
    {
        char buf[1024] = {0};
        printf("请输入消息: ");
        scanf("%s", buf);
        write(tcp_socket, buf, strlen(buf));
        if (strcmp(buf, "exit") == 0)
        {
            break;
        }
    }

    // 5. 关闭客户端
    close(tcp_socket);

    return 0;
}
